home *** CD-ROM | disk | FTP | other *** search
/ Workbench Add-On / Workbench Add-On - Volume 1.iso / BBS-Archive / Dev / Obrn-A_1.6_lib.lha / oberon-a / source3.lha / source / EAGUI / EADialogs.mod < prev    next >
Text File  |  1995-06-29  |  5KB  |  201 lines

  1. (*************************************************************************
  2.  
  3.      $RCSfile: EADialogs.mod $
  4.   Description: Implements a GUI for OCPrefs using EAGUI.library.
  5.  
  6.    Created by: fjc (Frank Copeland)
  7.     $Revision: 1.1 $
  8.       $Author: fjc $
  9.         $Date: 1995/06/04 23:20:25 $
  10.  
  11.   Copyright © 1995, Frank Copeland
  12.   This module forms part of the OC program
  13.   See OCPrefs.doc for conditions of use and distribution
  14.  
  15.   Log entries are at the end of the file.
  16.  
  17. *************************************************************************)
  18.  
  19. <* STANDARD- *> <* MAIN- *>
  20.  
  21. MODULE EADialogs;
  22.  
  23. IMPORT
  24.   SYS := SYSTEM, s := Sets, e := Exec, u := Utility, i := Intuition,
  25.   gt := GadTools, ea := EAGUI, spt := EASupport, Events,
  26.   ip := IntuiPointer;
  27.  
  28. (* ---------------------------------- *)
  29.  
  30. TYPE
  31.  
  32.   EADialog * = POINTER TO EADialogRec;
  33.   EADialogRec * = RECORD (Events.GadToolsPortRec)
  34.     winObj     - : ea.OPTR;
  35.     win        - : i.WindowPtr;
  36.     gadList    - : i.GadgetPtr;
  37.     visualInfo - : gt.VisualInfo;
  38.     drawInfo   - : i.DrawInfoPtr;
  39.     title      * : e.LSTRPTR;
  40.     flags      * : s.SET32;
  41.     IDCMP      * : s.SET32;
  42.     busyReq      : i.RequesterPtr;
  43.   END; (* EADialogRec *)
  44.  
  45.  
  46. (* ---------------------------------- *)
  47. PROCEDURE (dlg : EADialog) SetupWindow* ( win : i.WindowPtr );
  48.  
  49.   BEGIN (* SetupWindow *)
  50.     dlg.AttachPort (win.userPort);
  51.     spt.DoRender ( dlg.win, dlg.winObj, dlg.gadList,
  52.                    dlg.drawInfo, dlg.visualInfo )
  53.   END SetupWindow;
  54.  
  55. (* ---------------------------------- *)
  56. PROCEDURE (dlg : EADialog) CleanupWindow* ( win : i.WindowPtr );
  57.  
  58.   VAR ignore : LONGINT;
  59.  
  60.   BEGIN (* CleanupWindow *)
  61.     ignore := i.RemoveGList ( dlg.win, dlg.gadList, -1 );
  62.     ea.FreeGadgetList ( dlg.winObj, dlg.gadList );
  63.     dlg.gadList := NIL;
  64.     dlg.DetachPort
  65.   END CleanupWindow;
  66.  
  67. (* ---------------------------------- *)
  68. PROCEDURE (dlg : EADialog) HandleRefreshWindow*
  69.   ( msg : i.IntuiMessagePtr )
  70.   : INTEGER;
  71.  
  72.   BEGIN (* HandleRefreshWindow *)
  73.     gt.ReplyIMsg (msg);
  74.     gt.BeginRefresh (dlg.win);
  75.     gt.EndRefresh (dlg.win, i.LTRUE);
  76.     RETURN Events.Continue
  77.   END HandleRefreshWindow;
  78.  
  79. (* ---------------------------------- *)
  80. PROCEDURE (dlg : EADialog) HandleCloseWindow*
  81.   ( msg : i.IntuiMessagePtr )
  82.   : INTEGER;
  83.  
  84.   BEGIN (* HandleCloseWindow *)
  85.     gt.ReplyIMsg (msg);
  86.     RETURN Events.Stop
  87.   END HandleCloseWindow;
  88.  
  89. (* ---------------------------------- *)
  90. PROCEDURE (dlg : EADialog) InitObjects* () : BOOLEAN;
  91.  
  92.   <*$ < ReturnChk- *>
  93.   BEGIN
  94.     HALT (99);
  95.   END InitObjects;
  96.   <*$ > *>
  97.  
  98. (* ---------------------------------- *)
  99. PROCEDURE (dlg : EADialog) OpenWindow* () : BOOLEAN;
  100.  
  101.   VAR
  102.     w, h, bl, br, bt, bb, ignore : LONGINT;
  103.     wPtr, hPtr, blPtr, brPtr, btPtr, bbPtr : SYS.ADDRESS;
  104.  
  105.   BEGIN (* OpenWindow *)
  106.     (* obtain the minimum dimensions of every object in the tree *)
  107.     ea.GetMinSizes (dlg.winObj);
  108.  
  109.     (* get some attributes *)
  110.     wPtr := SYS.ADR (w); hPtr := SYS.ADR (h);
  111.     blPtr := SYS.ADR (bl); brPtr := SYS.ADR (br);
  112.     btPtr := SYS.ADR (bt); bbPtr := SYS.ADR (bb);
  113.  
  114.     ignore := ea.GetAttrs ( dlg.winObj,
  115.         ea.MinWidth,     wPtr,
  116.         ea.MinHeight,    hPtr,
  117.         ea.BorderLeft,   blPtr,
  118.         ea.BorderRight,  brPtr,
  119.         ea.BorderTop,    btPtr,
  120.         ea.BorderBottom, bbPtr,
  121.         u.done );
  122.  
  123.     (* open the window *)
  124.     dlg.win := i.OpenWindowTagsA ( NIL,
  125.         i.waTitle,       dlg.title,
  126.         i.waFlags,       dlg.flags,
  127.         i.waIDCMP,       dlg.IDCMP,
  128.         i.waInnerHeight, h + bt + bb,
  129.         i.waInnerWidth,  (w + bl + br),
  130.         u.done );
  131.  
  132.     RETURN (dlg.win # NIL)
  133.   END OpenWindow;
  134.  
  135. (* ---------------------------------- *)
  136. PROCEDURE (dlg : EADialog) Block*;
  137.  
  138.   BEGIN (* Block *)
  139.     IF dlg.busyReq = NIL THEN
  140.       NEW (dlg.busyReq);
  141.       IF dlg.busyReq # NIL THEN
  142.         ip.Busy (dlg.win);
  143.         i.InitRequester (dlg.busyReq^);
  144.         IF ~i.Request (dlg.busyReq, dlg.win) THEN
  145.           SYS.DISPOSE (dlg.busyReq);
  146.           dlg.busyReq := NIL
  147.         END
  148.       END
  149.     END
  150.   END Block;
  151.  
  152. (* ---------------------------------- *)
  153. PROCEDURE (dlg : EADialog) UnBlock*;
  154.  
  155.   BEGIN (* UnBlock *)
  156.     IF dlg.busyReq # NIL THEN
  157.       i.EndRequest (dlg.busyReq, dlg.win);
  158.       ip.Normal (dlg.win);
  159.       SYS.DISPOSE (dlg.busyReq);
  160.       dlg.busyReq := NIL
  161.     END
  162.   END UnBlock;
  163.  
  164. (* ---------------------------------- *)
  165. PROCEDURE (dlg : EADialog) Open*
  166.   ( visualInfo : gt.VisualInfo;
  167.     drawInfo   : i.DrawInfoPtr )
  168.   : BOOLEAN;
  169.  
  170.   BEGIN (* Open *)
  171.     dlg.visualInfo := visualInfo;
  172.     dlg.drawInfo := drawInfo;
  173.     IF dlg.InitObjects() THEN
  174.       IF dlg.OpenWindow() THEN
  175.         dlg.SetupWindow (dlg.win);
  176.         RETURN TRUE
  177.       END;
  178.     END;
  179.     RETURN FALSE
  180.   END Open;
  181.  
  182. (* ---------------------------------- *)
  183. PROCEDURE (dlg : EADialog) Close*;
  184.  
  185.   BEGIN (* Close *)
  186.     dlg.UnBlock;
  187.     dlg.CleanupWindow (dlg.win);
  188.     i.CloseWindow (dlg.win); dlg.win := NIL;
  189.     ea.DisposeObject (dlg.winObj); dlg.winObj := NIL
  190.   END Close;
  191.  
  192. END EADialogs.
  193.  
  194. (*************************************************************************
  195.  
  196.   $Log: EADialogs.mod $
  197. # Revision 1.1  1995/06/04  23:20:25  fjc
  198. # - Release 1.6
  199. #
  200. *************************************************************************)
  201.